# 导包
import time

import allure
import pytest
from selenium.webdriver.common.by import By

import conftest
from PO.base.get_driver import GetDriver
from PO.page.page_login import PageLogin
from PO.page.page_user_home import PageUserhome
from conftest import  login_url
from utils.create_data import create_data
from utils.decorator import  decorator
from utils.logger import Log

# TODO 测试类使用-------满足条件跳过
version=conftest.version
# 新建测试类
@allure.feature('登录模块')
@pytest.mark.skipif(version=='测试',reason="正在调试其他脚本，此用例暂不执行")
class TestLogin():
    # 初始化
    def setup_class(self):
        #初始化日志模块
        self.log = Log("登录失败用例").get_logger()
        #获取driver
        self.driver=GetDriver().get_driver(login_url)
        # 获取登录页面对象
        self.login = PageLogin(self.driver)
        #获取个人中心页面对象
        self.userhome=PageUserhome(self.driver)

    #结束方法
    def teardown_class(self):
        self.driver=GetDriver().quit_driver()

    # 参数化数据
    json_name ="login"
    data = ('username','pwd','code','expect')
    obj = create_data(json_name, data)
    data=obj.build_data()
    #用例标题
    ids_data=obj.build_desc()
    # 新建测试方法
    @decorator
    @allure.story('登录模块异常测试用例')
    @pytest.mark.parametrize("username,pwd,code,expect",data,ids=ids_data)
    def test_login02(self, username, pwd, code, expect):

        with allure.step("测试步骤一：输入用户名"):
            self.login.page_input_username(username)
            self.login.base_get_allure_image()

        with allure.step("测试步骤二：输入密码"):
            self.login.page_input_password(pwd)
            self.login.base_get_allure_image()

        with allure.step("测试步骤三：输入验证码"):
            self.login.page_input_verify_code(code)
            self.login.base_get_allure_image()

        with allure.step("测试步骤四：点击登录"):
            self.login.page_click_login_btn()
            self.login.base_get_allure_image()

        with allure.step("测试步骤五：断言"):
            msg = self.login.page_get_error_info()
            self.login.base_get_allure_image()


        # 点击提示框确定按钮
        with allure.step("测试步骤六：点击提示框确定按钮"):
            self.login.page_click_err_btn_ok()
            self.login.base_get_allure_image()

        #记录日志
        self.log.info("输入用户名：{} 、输入密码：{} 、输入验证码：{} 、期望：{}、实际：{}".format(username,pwd,code,expect,msg))

        # 断言
        assert msg == expect


